package com.xuecheng.media.controller;

import com.xuecheng.api.media.model.dto.MediaDTO;
import com.xuecheng.api.media.model.po.QueryMediaModel;
import com.xuecheng.api.media.model.vo.MediaAuditVO;
import com.xuecheng.common.domain.page.PageRequestParams;
import com.xuecheng.common.domain.page.PageVO;
import com.xuecheng.common.util.SecurityUtil;
import com.xuecheng.media.common.constant.MediaErrorCode;
import com.xuecheng.media.convert.MediaConvert;
import com.xuecheng.media.service.MediaService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@Slf4j
@RestController
public class MediaAuditController {

    @Autowired
    private MediaService mediaService;

    /**
     * 媒资信息审核-运营
     * @param auditVO VO封装类
     */
    @PutMapping("m/media/audit")
   public void approveCourse(@RequestBody MediaAuditVO auditVO){
        // 1、vo转换成dto
        MediaDTO dto = MediaConvert.INSTANCE.mediaVo2dto(auditVO);
        // 2、调用service层方法
        mediaService.approveCourse(dto);

    }

    /**
     * 获得媒资信息预览资源地址-运营
     * @param mediaId 媒资信息id
     * @return String 返回字符串
     */
    @GetMapping("m/media/preview/{mediaId}")
    public String previewMedia(@PathVariable Long mediaId) {
        // 1、获得访问令牌并从中解析出机构的信息Id数据
        Long companyId = SecurityUtil.getCompanyId();
        // 2、调用方法
        String vodUrl = mediaService.getVODUrl(mediaId,companyId);
        // 3、返回数据
        return vodUrl;
    }

    /**
     * 课程信息分页条件查询实现-运营
     * @param params PageRequestParams 分页封装数据
     * @param model QueryCourseBaseModel 条件查询封装数据
     * @return PageVO 分页结果封装数据
     */
    @PostMapping("m/media/list")
    public PageVO queryCourseList(PageRequestParams params, @RequestBody QueryMediaModel model) {
        // 平台唯一凭证
        Long companId = (long) MediaErrorCode.E_140000.getCode();
        // 2、调用方法
        PageVO<MediaDTO> pageVO = mediaService.queryMediaList(params, model, companId);
        // 3、返回数据
        return pageVO;
    }
}
